]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
scripting: Allow avoiding exiting perf helper
authorJonas Ådahl <jadahl@gmail.com>
Fri, 24 Mar 2023 09:21:38 +0000 (10:21 +0100)
committerJonas Ådahl <jadahl@gmail.com>
Thu, 20 Apr 2023 12:49:38 +0000 (14:49 +0200)
This will help creating test cases where windows are open during
shutdown.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2722>

js/ui/scripting.js

index 4034d21051beb18ca615e5c9a9cf285d758c3d9a..f988d53f99f23f0483df42869be12e942aea6369 100644 (file)
@@ -1,7 +1,7 @@
 // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
 /* exported sleep, waitLeisure, createTestWindow, waitTestWindows,
             destroyTestWindows, defineScriptEvent, scriptEvent,
-            collectStatistics, runPerfScript */
+            collectStatistics, runPerfScript, disableHelperAutoExit */
 
 const { Gio, GLib, Meta, Shell } = imports.gi;
 
@@ -70,8 +70,10 @@ function PerfHelper() {
 
 let _perfHelper = null;
 function _getPerfHelper() {
-    if (_perfHelper == null)
+    if (_perfHelper == null) {
         _perfHelper = new PerfHelper();
+        _perfHelper._autoExit = true;
+    }
 
     return _perfHelper;
 }
@@ -140,6 +142,17 @@ function destroyTestWindows() {
     perfHelper.DestroyWindowsAsync().catch(logError);
 }
 
+/**
+ * disableHelperAutoExit:
+ *
+ * Don't exixt the perf helper after running the script. Instead it will remain
+ * running until something else makes it exit, e.g. the Wayland socket closing.
+ */
+function disableHelperAutoExit() {
+    let perfHelper = _getPerfHelper();
+    perfHelper._autoExit = false;
+}
+
 /**
  * defineScriptEvent
  * @param {string} name: The event will be called script.<name>
@@ -287,7 +300,8 @@ async function _runPerfScript(scriptModule, outputFile) {
 
     try {
         const perfHelper = _getPerfHelper();
-        perfHelper.ExitSync();
+        if (perfHelper._autoExit)
+            perfHelper.ExitSync();
     } catch (err) {
         log(`Failed to exit helper: ${err}\n${err.stack}`);
         Meta.exit(Meta.ExitCode.ERROR);